# Amending a Commit

आपके दूरस्थ संग्रहालय में एक परिवर्तन करते हैं, फिर बाद में पता चलता है कि आपके कमिट संदेश में त्रुटि है या आपने अपने सबसे हाल के कमिट में एक पंक्ति जोड़ना भूल दी है।
आप ऐसा कैसे संपादित करेंगे? इस पर यह ट्यूटोरियल विस्तार से बताता है।

##Github पर अपलोड करने के बाद हाल के कमिट संदेश को संशोधित करना।
इसे फ़ाइल खोले बिना करने के लिए:
*     निम्नलिखित कमांड का उपयोग करें ```git commit --amend -m "followed by your new commit message"```
*     चलाना ```git push origin <branch-name>```  संग्रहालय में परिवर्तन को कमिट (commit) करने के लिए क्या होगा।

नोट: यदि आप केवल ```git commit --amend```टाइप करते हैं, तो आपका पाठ संपादित करने के लिए आपके पाठ संपादक खुलेगा। ``-m`` फ़्लैग जोड़ने से इसे रोका जा सकता है।

## एक सिंगल कमिट पर संशोधन करना

तो, यदि हम एक फ़ाइल में एक छोटे से बदलाव को करना भूल जाते हैं, जैसे एक शब्द को बदलना, और हमने पहले से ही उस कमिट को हमारे रिमोट रिपॉजिटरी में पुश कर दिया है?

इसे व्यक्त करने के लिए यहां मेरे कमिट की एक लॉग है:
```
g56123f create file bot file
a2235d updated contributor.md
a5da0d modified bot file
```
चलिए मान लें कि मुझसे एक शब्द बदलने को भूल गया हूँ बॉट फ़ाइल में

इसके लिए दो तरीके हैं। पहला है कि इसमें परिवर्तन को शामिल करने वाला एक नया कमिट हो, जैसे:
```
g56123f create file botfile
a2235d updated contributor.md
a5da0d modified botfile
b0ca8f added single word to botfile
```
दूसरा तरीका है a5da0d कमिट को संशोधित करना, इस नए शब्द को जोड़ना और इसे एक कमिट के रूप में गिटहब पर पुश करना। दूसरा तरीका बेहतर लगता है क्योंकि यह केवल एक छोटे से बदलाव है।

इसे प्राप्त करने के लिए, हम निम्नलिखित करेंगे:

*   फ़ाइल में संशोधन करें। इस मामले में, मैं बॉट फ़ाइल को संशोधित करके पिछले समय छूट गया शब्द शामिल करूंगा।
*   आगे बढ़ें, git add <filename> के साथ फ़ाइल को स्टेजिंग क्षेत्र में जोड़ें|

आम तौर पर स्टेजिंग क्षेत्र में फ़ाइलें जोड़ने के बाद, अगला काम होता है git commit -m "हमारा कमिट संदेश" सही?
लेकिन क्योंकि हम यहां पिछले कमिट को संशोधित करना चाहते हैं, इसलिए हम इसके बजाय निम्नलिखित कमांड चलाएंगे:

*   ```git commit --amend```
इससे पाठ संपादक खुलेगा और आपको संदेश संपादित करने के लिए कहेगा। आप पिछले जैसा संदेश छोड़ सकते हैं या इसे बदल सकते हैं।
*   संपादक(Editor) से बाहर निकलें
*   git push origin <branch-name> के साथ अपने बदलावों को पुश करें

इस तरह, दोनों बदलावों को एक ही सिंगल कमिट में रखा जाएगा।

## रिमोट पर कमिट संशोधित करना

यदि वह कमिट जिसे आप संशोधित करना चाहते हैं पहले से ही रिमोट पर पुश किया गया है, तो इसे संशोधित करने से आपका स्थानीय इतिहास रिमोट से अलग हो जाएगा (क्योंकि आप तदनुसार एक नया कमिट बनाते हैं और संशोधित कमिट को बदल देते हैं)। रिमोट पर कमिट को बदलने के लिए, अपनी शाखा पर रिमोट का इतिहास अधिलेखित करने की आवश्यकता होगी। इसे प्राप्त करने के लिए, ऊपर वर्णित प्रक्रिया का पालन करें, लेकिन जब आप अपनी कमिट को रिमोट पर पुश करें तो फ़ोर्स पुश का उपयोग करें।


> **Warning**
> फ़ोर्स पुश करने से रिमोट परिवर्तन (और उसे छोड़ देने) को अधिलेखित कर देगा और केवल आपके पुश किए गए कमिट रखेगा। रिमोट पर, टीम के अन्य सदस्यों द्वारा उस बीच में किए गए बदलावों को भी अधिलेखित कर देगा।

इस तरह आप रिमोट परिवर्तन को संशोधित करते हैं:

```bash 
git add <आपकी बदली हुई फ़ाइलें>
git commit --amend -m "आपका नया कमिट संदेश के बाद"
git push --force
```

>उपयोग करने के लिए `--force` के बजाय `--force-with-lease` सुरक्षित विकल्प है जो रिमोट शाखा पर दूसरे लोगों के बदलावों को अधिलेखित करने से बचाता है (यदि ऐसा आपकी इच्छा नहीं है)।


श्री-कृष्ण-वी द्वारा अनुवादित
